This report shows how the numbers of cars with alternative drives has developed in Germany over the last few years.
Initially, install all required dependencies necessary to create this report.
%pip install -r requirements.txt
Requirement already satisfied: asttokens==2.2.1 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 1)) (2.2.1) Requirement already satisfied: attrs==23.1.0 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 2)) (23.1.0) Requirement already satisfied: backcall==0.2.0 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 3)) (0.2.0) Requirement already satisfied: comm==0.1.3 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 4)) (0.1.3) Requirement already satisfied: debugpy==1.6.7 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 5)) (1.6.7) Requirement already satisfied: decorator==5.1.1 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 6)) (5.1.1) Requirement already satisfied: et-xmlfile==1.1.0 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 7)) (1.1.0) Requirement already satisfied: exceptiongroup==1.1.1 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 8)) (1.1.1) Requirement already satisfied: executing==1.2.0 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 9)) (1.2.0) Requirement already satisfied: fastjsonschema==2.17.1 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 10)) (2.17.1) Requirement already satisfied: greenlet==2.0.2 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 11)) (2.0.2) Requirement already satisfied: iniconfig==2.0.0 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 12)) (2.0.0) Requirement already satisfied: ipykernel==6.23.1 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 13)) (6.23.1) Requirement already satisfied: ipython==8.13.2 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 14)) (8.13.2) Requirement already satisfied: jedi==0.18.2 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 15)) (0.18.2) Requirement already satisfied: jsonschema==4.17.3 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 16)) (4.17.3) Requirement already satisfied: jupyter_client==8.2.0 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 17)) (8.2.0) Requirement already satisfied: jupyter_core==5.3.0 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 18)) (5.3.0) Requirement already satisfied: matplotlib-inline==0.1.6 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 19)) (0.1.6) Requirement already satisfied: nbformat==5.8.0 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 20)) (5.8.0) Requirement already satisfied: nest-asyncio==1.5.6 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 21)) (1.5.6) Requirement already satisfied: numpy==1.24.3 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 22)) (1.24.3) Requirement already satisfied: openpyxl==3.1.2 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 23)) (3.1.2) Requirement already satisfied: packaging==23.1 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 24)) (23.1) Requirement already satisfied: pandas==2.0.1 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 25)) (2.0.1) Requirement already satisfied: parso==0.8.3 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 26)) (0.8.3) Requirement already satisfied: pexpect==4.8.0 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 27)) (4.8.0) Requirement already satisfied: pickleshare==0.7.5 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 28)) (0.7.5) Requirement already satisfied: platformdirs==3.5.1 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 29)) (3.5.1) Requirement already satisfied: plotly==5.14.1 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 30)) (5.14.1) Requirement already satisfied: pluggy==1.0.0 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 31)) (1.0.0) Requirement already satisfied: prompt-toolkit==3.0.38 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 32)) (3.0.38) Requirement already satisfied: psutil==5.9.5 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 33)) (5.9.5) Requirement already satisfied: ptyprocess==0.7.0 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 34)) (0.7.0) Requirement already satisfied: pure-eval==0.2.2 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 35)) (0.2.2) Requirement already satisfied: Pygments==2.15.1 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 36)) (2.15.1) Requirement already satisfied: pyrsistent==0.19.3 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 37)) (0.19.3) Requirement already satisfied: pytest==7.3.1 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 38)) (7.3.1) Requirement already satisfied: python-dateutil==2.8.2 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 39)) (2.8.2) Requirement already satisfied: pytz==2023.3 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 40)) (2023.3) Requirement already satisfied: pyzmq==25.1.0 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 41)) (25.1.0) Requirement already satisfied: six==1.16.0 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 42)) (1.16.0) Requirement already satisfied: SQLAlchemy==2.0.13 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 43)) (2.0.13) Requirement already satisfied: stack-data==0.6.2 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 44)) (0.6.2) Requirement already satisfied: tenacity==8.2.2 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 45)) (8.2.2) Requirement already satisfied: tomli==2.0.1 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 46)) (2.0.1) Requirement already satisfied: tornado==6.3.2 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 47)) (6.3.2) Requirement already satisfied: traitlets==5.9.0 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 48)) (5.9.0) Requirement already satisfied: typing_extensions==4.5.0 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 49)) (4.5.0) Requirement already satisfied: tzdata==2023.3 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 50)) (2023.3) Requirement already satisfied: wcwidth==0.2.6 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 51)) (0.2.6) Requirement already satisfied: xlrd==2.0.1 in ./.venv/lib/python3.10/site-packages (from -r requirements.txt (line 52)) (2.0.1) Note: you may need to restart the kernel to use updated packages.
To answer this question the results from the dataset "FZ 10" from the Kraftfahrt-Bundesamt (KBA) were used. The different parts of this dataset can be found at: https://www.kba.de/DE/Statistik/Fahrzeuge/Neuzulassungen/MonatlicheNeuzulassungen/monatl_neuzulassungen_node.html
The FZ 10 is a report that states how many cars were registered during a month and separates the new registrations by brand, model and drive of the car. Therefore it suits the goal of the project, since the goal is to analyze how the distribution of different types has developed over the last few years and how this trend will likely continue in the future. The report goes back to 2008, but only the entries from the last 5 years (2018-2022) to keep the number of data-entries low. Also the first 3 months of 2023 were used to compare our findings to the latest information.
Note: The report FZ10 did not specify the type "Plugin-Hybridantrieb" prior to the year 2021. This resulted in it being listed with 0 cars for the first 3 years. At first there was the idea of aggregating this value with the number of vehicles listed as "Hybridantrieb", but this was later rejected, since this could make it more difficult to make predictions for hybrid-cars.
import pandas as pd
import plotly.io as pio
import plotly.graph_objects as go
import plotly.subplots as ps
brand_statistics = pd.read_sql_table('brand-statistics', 'sqlite:///data/data.sqlite')
pio.renderers.default = "notebook"
pd.options.plotting.backend = 'plotly'
brand_statistics.drop(['Modellreihe', 'Monat'], axis=1, inplace=True)
brand_statistics = brand_statistics[brand_statistics['Marke'].str.contains('ZUSAMMEN', na=False)]
brand_statistics = brand_statistics.groupby(['Jahr']).sum()
brand_statistics.drop(['Marke'], axis=1, inplace=True)
brand_statistics["Sonstiges"] = brand_statistics["Insgesamt"] - (brand_statistics['mit Dieselantrieb'] + brand_statistics['Hybridantrieb (gesamt)'] + brand_statistics['Plugin-Hybridantrieb (gesamt)'] + brand_statistics['Elektroantrieb'] + brand_statistics['Allradantrieb'] + brand_statistics['Cabriolets'])
brand_statistics.drop(['Insgesamt', 'Hybridantrieb (Benzin)', 'Hybridantrieb (Diesel)', 'Plugin-Hybridantrieb (Benzin)', 'Plugin-Hybridantrieb (Diesel)'], axis=1, inplace=True)
pie_fig = ps.make_subplots(
rows=2,
cols=3,
specs=[[{'type':'domain'}, {'type':'domain'}, {'type':'domain'}], [{'type':'domain'}, {'type':'domain' }, None]],
subplot_titles=['2018','2019', '2020', '2021', '2022']
)
pie_fig.add_trace(go.Pie(values=brand_statistics.values[0], labels=brand_statistics.columns, name="2018"), 1, 1)
pie_fig.add_trace(go.Pie(values=brand_statistics.values[1], labels=brand_statistics.columns, name="2019"), 1, 2)
pie_fig.add_trace(go.Pie(values=brand_statistics.values[2], labels=brand_statistics.columns, name="2020"), 1, 3)
pie_fig.add_trace(go.Pie(values=brand_statistics.values[3], labels=brand_statistics.columns, name="2021"), 2, 1)
pie_fig.add_trace(go.Pie(values=brand_statistics.values[4], labels=brand_statistics.columns, name="2022"), 2, 2)
pie_fig.update_traces(hoverinfo='label+value+name', marker=dict(colors=["blue", "green", "darkgreen", "yellow", "brown", "orange", "red"]))
pie_fig.update_layout(title_text='Figure 1: Distribution for the different types of drives from 2018 - 2022')
pie_fig.show()
line_fig = go.Figure()
line_fig.add_trace(go.Scatter(x=['2018','2019', '2020', '2021', '2022'], y=brand_statistics['Sonstiges'], name="Sonstiges", line=dict(color="red")))
line_fig.add_trace(go.Scatter(x=['2018','2019', '2020', '2021', '2022'], y=brand_statistics['mit Dieselantrieb'], name="mit Dieselantrieb", line=dict(color="blue")))
line_fig.add_trace(go.Scatter(x=['2018','2019', '2020', '2021', '2022'], y=brand_statistics['Hybridantrieb (gesamt)'], name="Hybridantrieb (gesamt)", line=dict(color="green")))
line_fig.add_trace(go.Scatter(x=['2018','2019', '2020', '2021', '2022'], y=brand_statistics['Plugin-Hybridantrieb (gesamt)'], name="Plugin-Hybridantrieb (gesamt)", line=dict(color="darkgreen")))
line_fig.add_trace(go.Scatter(x=['2018','2019', '2020', '2021', '2022'], y=brand_statistics['Elektroantrieb'], name="Elektroantrieb", line=dict(color="yellow")))
line_fig.add_trace(go.Scatter(x=['2018','2019', '2020', '2021', '2022'], y=brand_statistics['Allradantrieb'], name="Allradantrieb", line=dict(color="brown")))
line_fig.add_trace(go.Scatter(x=['2018','2019', '2020', '2021', '2022'], y=brand_statistics['Cabriolets'], name="Cabriolets", line=dict(color="orange")))
line_fig.update_layout(title_text='Figure 2: Number cars with certain drives from 2018 - 2022', xaxis=dict(tickmode = 'linear', dtick=1))
line_fig.show()
Figures 1 and 2 show that the number of cars with traditional drives has been steadily decreasing, while the number of hybrid or electric cars has increased significantly. In the first three year it was mostly an increase in hybrid cars, but since 2021 this number has started to stagnate and the number of plugin-hybrid and electric cars has started to grow. There was also a slight overall decline in the number of newly-registered cars, but this does not seem to effect the overall distribution that much. Interestingly the number of cars with all-wheel-drive and the number of newly-registered cabriolets stayed roughly the same over the whole timespan.
If you compare this against the data that was available for the first 3 months of 2023, the described trends seems to continue (see Figure 3 below). But since we would need more information to confirm this, this could just be by coincidence.
import plotly.graph_objects as go
import plotly.subplots as ps
pie_fig = ps.make_subplots(
rows=1,
cols=1,
specs=[[{'type':'domain'}]],
subplot_titles=['2023']
)
pie_fig.add_trace(go.Pie(values=brand_statistics.values[5], labels=brand_statistics.columns, name="2023"), 1, 1)
pie_fig.update_traces(hoverinfo='label+value+name', marker=dict(colors=["blue", "green", "darkgreen", "yellow", "brown", "orange", "red"]))
pie_fig.update_layout(title_text='Figure 3: Distribution for the different types of drives from January 2023 - March 2023')
pie_fig.show()
The above dataset only allowed to get an overall view over the current developments in Germany. Since the other goal of this project was to identify regions, that still lag behind in the adoption of cars with alternative drives, we have to look at another dataset.
For this analysis the report FZ 28.9 from the Kraftfahrt-Bundesamt (KBA) was used. It can be found at https://www.kba.de/DE/Statistik/Fahrzeuge/Neuzulassungen/Umwelt/n_umwelt_node.html and, similarly to the FZ 10 used in the previous segment, describes the number of newly-registered cars in Germany. However this report focuses more on alternative drives and allows a better look at the different federal states, since it includes specific information for each of them. Since it is a newer report, there aren't as many datasets available as for the previous segment. Because of that only the complete datasets from 2021 and 2022 and the first 3 months from 2023 were analyzed.
import pandas as pd
fs_statistics = pd.read_sql_table('federal-state-statistics', 'sqlite:///data/data.sqlite')
subsets_to_remove = ['2021', '2022', '2023', 'Sonstige']
fs_statistics = fs_statistics[fs_statistics['Bundesland'].str.contains('|'.join(subsets_to_remove), na=False) == False]
fs_statistics = fs_statistics.groupby(['Jahr', 'Bundesland']).sum()
columns_to_drop = [
'Monat',
'Anzahl (BEV)',
'Anzahl (Brennstoffzelle)',
'Anzahl (Plug-in-Hybrid)',
'Anzahl (Voll-Hybrid)',
'Anzahl (Benzin-Hybrid)',
'Anzahl (Benzin-Voll-Hybrid)',
'Anzahl (Diesel-Hybrid)',
'Anzahl (Diesel-Voll-Hybrid)'
]
fs_statistics.drop(columns_to_drop, axis=1, inplace=True)
fs_statistics['Anzahl (traditioneller Antrieb)'] = fs_statistics['Anzahl (gesamt)'] - fs_statistics['Anzahl (alternativer Antrieb)']
fs_statistics.copy()
fs_statistics['Anzahl (Elektro-Antrieb)'] = fs_statistics['Anzahl (Elektro-Antrieb)'] / fs_statistics['Anzahl (gesamt)']
fs_statistics['Anzahl (Hybrid)'] = fs_statistics['Anzahl (Hybrid)'] / fs_statistics['Anzahl (gesamt)']
fs_statistics['Anzahl (Gas)'] = fs_statistics['Anzahl (Gas)'] / fs_statistics['Anzahl (gesamt)']
fs_statistics['Anzahl (Wasserstoff)'] = fs_statistics['Anzahl (Wasserstoff)'] / fs_statistics['Anzahl (gesamt)']
fs_statistics['Anzahl (traditioneller Antrieb)'] = fs_statistics['Anzahl (traditioneller Antrieb)'] / fs_statistics['Anzahl (gesamt)']
fs_statistics.drop(['Anzahl (gesamt)', 'Anzahl (alternativer Antrieb)'], axis=1, inplace=True)
display(fs_statistics)
| Anzahl (Elektro-Antrieb) | Anzahl (Hybrid) | Anzahl (Gas) | Anzahl (Wasserstoff) | Anzahl (traditioneller Antrieb) | ||
|---|---|---|---|---|---|---|
| Jahr | Bundesland | |||||
| 2021 | Baden-Württemberg | 0.317380 | 0.149425 | 0.004525 | 0.0 | 0.528670 |
| Bayern | 0.244235 | 0.188202 | 0.003366 | 0.0 | 0.564197 | |
| Berlin | 0.292335 | 0.194299 | 0.004389 | 0.0 | 0.508977 | |
| Brandenburg | 0.241439 | 0.167772 | 0.006904 | 0.0 | 0.583886 | |
| Bremen | 0.258531 | 0.181544 | 0.004370 | 0.0 | 0.555556 | |
| Hamburg | 0.169201 | 0.158083 | 0.001687 | 0.0 | 0.671029 | |
| Hessen | 0.237432 | 0.145482 | 0.005921 | 0.0 | 0.611165 | |
| Mecklenburg-Vorpommern | 0.188622 | 0.164121 | 0.004430 | 0.0 | 0.642826 | |
| Niedersachsen | 0.252609 | 0.103891 | 0.007642 | 0.0 | 0.635857 | |
| Nordrhein-Westfalen | 0.277538 | 0.180398 | 0.006414 | 0.0 | 0.535650 | |
| Rheinland-Pfalz | 0.298178 | 0.160260 | 0.006855 | 0.0 | 0.534708 | |
| Saarland | 0.231918 | 0.225957 | 0.005095 | 0.0 | 0.537029 | |
| Sachsen | 0.205921 | 0.175545 | 0.006758 | 0.0 | 0.611777 | |
| Sachsen-Anhalt | 0.191448 | 0.200609 | 0.007638 | 0.0 | 0.600305 | |
| Schleswig-Holstein | 0.303901 | 0.138590 | 0.004997 | 0.0 | 0.552512 | |
| Thüringen | 0.199816 | 0.165948 | 0.006025 | 0.0 | 0.628211 | |
| 2022 | Baden-Württemberg | 0.351354 | 0.172908 | 0.005937 | 0.0 | 0.469801 |
| Bayern | 0.302013 | 0.207702 | 0.004284 | 0.0 | 0.486001 | |
| Berlin | 0.300692 | 0.239955 | 0.005664 | 0.0 | 0.453689 | |
| Brandenburg | 0.294359 | 0.179846 | 0.008838 | 0.0 | 0.516957 | |
| Bremen | 0.301181 | 0.205873 | 0.005554 | 0.0 | 0.487392 | |
| Hamburg | 0.238997 | 0.196740 | 0.002073 | 0.0 | 0.562190 | |
| Hessen | 0.315901 | 0.151043 | 0.005905 | 0.0 | 0.527151 | |
| Mecklenburg-Vorpommern | 0.241073 | 0.181220 | 0.017204 | 0.0 | 0.560503 | |
| Niedersachsen | 0.289019 | 0.118941 | 0.006066 | 0.0 | 0.585974 | |
| Nordrhein-Westfalen | 0.338611 | 0.173383 | 0.007389 | 0.0 | 0.480617 | |
| Rheinland-Pfalz | 0.366579 | 0.161608 | 0.008943 | 0.0 | 0.462869 | |
| Saarland | 0.332542 | 0.213928 | 0.008199 | 0.0 | 0.445331 | |
| Sachsen | 0.234855 | 0.183692 | 0.009706 | 0.0 | 0.571747 | |
| Sachsen-Anhalt | 0.230678 | 0.217311 | 0.010020 | 0.0 | 0.541991 | |
| Schleswig-Holstein | 0.367333 | 0.141332 | 0.006829 | 0.0 | 0.484505 | |
| Thüringen | 0.251985 | 0.164643 | 0.008570 | 0.0 | 0.574801 | |
| 2023 | Baden-Württemberg | 0.242274 | 0.252398 | 0.004129 | 0.0 | 0.501198 |
| Bayern | 0.180874 | 0.246006 | 0.003935 | 0.0 | 0.569185 | |
| Berlin | 0.174738 | 0.318208 | 0.003566 | 0.0 | 0.503489 | |
| Brandenburg | 0.184159 | 0.244859 | 0.008472 | 0.0 | 0.562510 | |
| Bremen | 0.188117 | 0.329821 | 0.005157 | 0.0 | 0.476906 | |
| Hamburg | 0.140145 | 0.301947 | 0.002674 | 0.0 | 0.555234 | |
| Hessen | 0.195552 | 0.198750 | 0.004245 | 0.0 | 0.601454 | |
| Mecklenburg-Vorpommern | 0.151515 | 0.229055 | 0.008318 | 0.0 | 0.611111 | |
| Niedersachsen | 0.190644 | 0.180476 | 0.004817 | 0.0 | 0.624062 | |
| Nordrhein-Westfalen | 0.212863 | 0.230694 | 0.006100 | 0.0 | 0.550343 | |
| Rheinland-Pfalz | 0.236953 | 0.218361 | 0.008658 | 0.0 | 0.536028 | |
| Saarland | 0.179350 | 0.267726 | 0.009964 | 0.0 | 0.542960 | |
| Sachsen | 0.148248 | 0.237492 | 0.009019 | 0.0 | 0.605241 | |
| Sachsen-Anhalt | 0.148257 | 0.265864 | 0.006953 | 0.0 | 0.578927 | |
| Schleswig-Holstein | 0.237552 | 0.202365 | 0.004376 | 0.0 | 0.555707 | |
| Thüringen | 0.134663 | 0.203017 | 0.007585 | 0.0 | 0.654735 |
The above tabel shows the distribution of newly-registered cars with different drives over the last three years. It shows the same overall trends as seen before (decline in traditional drives, increase in alternative drives), but it also describes a few regional differences when comparing the percentages from 2021 to 2022. For example some federal states only had a two percent increase in hybrid cars(Bremen), while some states had an increase up to 8 percent (Hessen).
Aside from these small differences however, there does not seem to be one federal state that significantly lags behind or is far more advanced than the other states. This is can be seen even better if you plot these distributions in a heatmap (see Figures 4-6 below). Therefore one can assume that the overall trend discovered in part one is a good representation for all federal state/all of Germany.
import plotly.graph_objects as go
fs_statistics_2021 = fs_statistics.loc[[2021]].reset_index(level='Jahr', drop=True)
fs_statistics_2022 = fs_statistics.loc[[2022]].reset_index(level='Jahr', drop=True)
fs_statistics_2023 = fs_statistics.loc[[2023]].reset_index(level='Jahr', drop=True)
heatmap_2021 = go.Figure(data=go.Heatmap(z=fs_statistics_2021.values, y=fs_statistics_2021.index, x=fs_statistics_2021.columns))
heatmap_2021.update_layout(title_text='Figure 4: Heatmap for the distribution of different drives in 2021')
heatmap_2021.show()
heatmap_2022 = go.Figure(data=go.Heatmap(z=fs_statistics_2022.values, y=fs_statistics_2022.index, x=fs_statistics_2022.columns))
heatmap_2022.update_layout(title_text='Figure 5: Heatmap for the distribution of different drives in 2022')
heatmap_2022.show()
heatmap_2023 = go.Figure(data=go.Heatmap(z=fs_statistics_2023.values, y=fs_statistics_2023.index, x=fs_statistics_2023.columns))
heatmap_2023.update_layout(title_text='Figure 6: Heatmap for the distribution of different drives in 2023 (January - March)')
heatmap_2023.show()
The project wanted to analyze how the number of cars with alternative drives in Germany has developed over the last few years. It was discovered, that the number of newly-registered cars using alternative drives has increase significantly, while the number of cars using traditional drives has decreased.
It was also shown, that this development was not limited to certain regions of Germany, but instead representative for the entire country.
The project was able to gather some good insight into the current developments. But if you want to continue this research even further, there are some improvements you could make:
A dataset describing the brand and drive of cars that were registered in the year 2023.
A dataset describing the brand and drive of cars that were registered in the year 2022.
A dataset describing the brand and drive of cars that were registered in the year 2021.
A dataset describing the brand and drive of cars that were registered in the year 2020.
A dataset describing the brand and drive of cars that were registered in the year 2019.
A dataset describing the brand and drive of cars that were registered in the year 2018.
A dataset describing the number and types of newly-registered vehicles in germany for year 2023.
A dataset describing the number and types of newly-registered vehicles in germany in the year 2022.
A dataset describing the number and types of newly-registered vehicles in germany in the year 2021.